package net.sdd.sms.service.impl;

import net.sdd.sms.config.SmsTemplate;
import net.sdd.sms.service.SmsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
import cn.hutool.core.util.RandomUtil;

import java.util.concurrent.TimeUnit;

@Service
public class SmsServiceImpl implements SmsService {
    @Autowired
    private SmsTemplate smsTemplate;
    // 操作redis的工具类
    @Autowired
    private StringRedisTemplate stringRedisTemplate;
    @Override
    public void sendPhoneMessage(String phone) {
        // 发短信之前，先判断是否已经发送过验证码，如果已经发送过验证码且没有过期，就可以从redis中获取
        String redisCode = stringRedisTemplate.opsForValue().get(phone);
        if (redisCode != null) { // 省钱
            // 说明已经发过验证码，且没有过期
            return;
        }

        // 通过hutool工具包，生成四位验证码
        String code = RandomUtil.randomNumbers(4);
        // 发送短信
        //smsTemplate.sendSms(phone,code);
        code = "123456";
        // 把验证码存储到Redis中, 设置有效时间5分钟
        // 命令： set name 11 ex 300   设置name的有效时间5分钟
        // 命令： ttl name             查看name这个key的有效时间
        stringRedisTemplate.opsForValue().set(phone,code,5, TimeUnit.MINUTES);
    }

    public static void main(String[] args) {
        String code = RandomUtil.randomNumbers(6);
        System.out.println("code = " + code);
    }
}
